/* Original Author:  Dominick O'Dierno
 * Date: 2007   odiernod@gmail.com     --Originally intended for use with DOMercury:  http://www.odierno.com/domercury
 * Description: Defines an interface to provide DOMercury with IActions
 * 
 * --CHANGELOG--
 * 
 * */

using System;
using System.Collections.Generic;
using System.Text;

namespace DOMercury.Interfaces
{
    public interface IActionProvider
    {
        /// <summary>
        /// The name of your IActionProvider
        /// </summary>
        string Name
        {
            get;
        }
        /// <summary>
        /// The description of your IActionProvider
        /// </summary>
        string Description
        {
            get;
        }
        
        /// <summary>
        /// The type of item these actions take
        /// </summary>
        string ItemType
        {
            get;
        }
        
        /// <summary>
        /// returns a list of actions to provide with the listed ItemType
        /// </summary>
        /// <returns></returns>
        List<IAction> Actions
        {
            get;
        }

        /// <summary>
        /// Indicates whether or not this plugin has an options form.  Return false if not supplying an options form
        /// </summary>
        bool HasOptions
        {
            get;
        }

        /// <summary>
        /// This is the function that gets called when the user hits the "Show Options" but in the Plugin Details form.  You should call "ShowDialog" on your options form here.
        /// </summary>
        void ShowOptions();
    }
}
